package br.com.sbc.sessionBean;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import br.com.sbc.ejb.entity.Postagem;
import br.com.sbc.ejb.entity.Usuario;
import br.com.sbc.ejb.entity.Voto;

@Stateless
public class VotoSessionBean {
	
	@PersistenceContext
	private EntityManager entityManager;
	
	public void incluirVoto(Voto voto) {
		this.entityManager.merge(voto);
	}
	public Voto consultaVotoUsuario(Long idUsuario,Long idPostagem) {
		Query query = entityManager.createNamedQuery("Voto.votoUsuarioPostagem");
		query.setParameter("idUsuario", idUsuario);
		query.setParameter("idPostagem", idPostagem);
		try{
			return (Voto) query.getSingleResult();
		}catch (Exception e) {
			return null;
		}
	}
	@SuppressWarnings("unchecked")
	public List<Voto> consultaVotoPostagem(Long idPostagem) {
		Query query = entityManager.createNamedQuery("Voto.votoPostagem");
		query.setParameter("idPostagem", idPostagem);
		try{
			return query.getResultList();
		}catch (Exception e) {
			return null;
		}
	}
	@SuppressWarnings("unchecked")
	public List<Voto> listaVotosPositivosPostagem(long idPostagem) {
		Query query = entityManager.createNamedQuery("Voto.votosPositivosPostagem");
		query.setParameter("idPostagem", idPostagem);
		try{
			return query.getResultList();
		}catch (Exception e) {
			return null;
		}
	}
	@SuppressWarnings("unchecked")
	public List<Voto> listaVotosNegativosPostagem(long idPostagem) {
		Query query = entityManager.createNamedQuery("Voto.votosNegativosPostagem");
		query.setParameter("idPostagem", idPostagem);
		try{
			return query.getResultList();
		}catch (Exception e) {
			return null;
		}
	}
	@SuppressWarnings("unchecked")
	public List<Long> listaIdUsuarioVotantesPostagem(long idPostagem) {
		Query query = entityManager.createNamedQuery("Voto.idUsuarioVotantesPostagem");
		query.setParameter("idPostagem", idPostagem);
		try{
			return query.getResultList();
		}catch (Exception e) {
			return null;
		}
	}
}
